const LinkedList = require('../linked-list/linkedList');

module.exports = class Stack {
  constructor() {
    this.linkedList = new LinkedList();
  }
  // 栈里面是否有任务
  isEmpty() {
    return !this.linkedList.head;
  }
  // 获取栈顶的任务
  peek() {
    if (!this.linkedList.head) {
      return null;
    }
    return this.linkedList.head.value;
  }
  // 进栈
  push(value) {
    this.linkedList.prepend(value);
  }
  // 出栈
  pop() {
    const removeHead = this.linkedList.removeHead();
    return removeHead ? removeHead.value : null;
  }
  // 以数组的形式获取任务
  toArray() {
    return this.linkedList.toArray().map(linkedListNode => linkedListNode.value);
  }
  toString(callback) {
    this.linkedList.toString(callback);
  }
}